import 'package:cached_network_image/cached_network_image.dart';
import 'package:e_book/model/review.dart';
import 'package:e_book/utils/header_util.dart';
import 'package:flutter/material.dart';
import 'package:flutter_rating_bar/flutter_rating_bar.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:readmore/readmore.dart';

class MyBookReviewItem extends StatelessWidget {
  final Review review;
  const MyBookReviewItem({super.key, required this.review});

  @override
  Widget build(BuildContext context) {
    return Padding(
      padding: EdgeInsets.only(bottom: 30.h),
      child: Column(
        crossAxisAlignment: CrossAxisAlignment.start,
        children: [
          // 读者信息
          Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              Row(
                children: [
                  // 头像
                  ClipOval(
                    child: CachedNetworkImage(
                        height: 40.r,
                        width: 40.r,
                        fit: BoxFit.cover,
                        httpHeaders: HeaderUtil.randomHeader(),
                        imageUrl: review.author?.avatar ?? ''),
                  ),

                  10.horizontalSpace,
                  // 读者信息
                  Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      Text(
                        review.author?.name ?? '',
                        style: TextStyle(
                          fontSize: 14.sp,
                          fontWeight: FontWeight.w600,
                        ),
                      ),
                      _getRateUI(context),
                    ],
                  ),
                ],
              ),
              Text(
                review.date ?? '',
                style: TextStyle(
                  fontSize: 14.sp,
                  fontWeight: FontWeight.w500,
                ),
              )
            ],
          ),

          10.verticalSpace,

          // 读者评论
          Text(
            review.short ?? '',
            style: TextStyle(
              fontSize: 14.sp,
              fontWeight: FontWeight.w500,
            ),
          ),
          // ReadMoreText(
          //   review.short ?? '',
          //   trimLines: 3, // 显示行数
          //   trimLength: 70, // 显示字数
          //   colorClickableText: Theme.of(context).colorScheme.primary,
          //   trimCollapsedText: '更多',
          //   trimExpandedText: '收起',
          //   style: TextStyle(
          //     fontSize: 14.sp,
          //     fontWeight: FontWeight.w500,
          //     height: 1.5, // 行高
          //   ),
          // ),
        ],
      ),
    );
  }

  _getRateUI(BuildContext context) {
    if (review.rate == null || review.rate == 0) {
      return const SizedBox();
    }

    return RatingBar.builder(
      itemCount: 5, // 设置评分的最大值为5
      itemSize: 15.r, // 设置评分图标大小为15.r（根据设备尺寸自适应的大小）
      itemPadding: EdgeInsets.only(right: 2.w), // 设置评分图标之间的间距为2.w（根据设备尺寸自适应的间距）
      ignoreGestures: true, // 禁用手势响应，评分条只显示不响应用户操作
      initialRating: review.rate ?? 0.0, // 初始评分为书籍评分的一半，若书籍评分为null，则初始评分为0
      minRating: 1, // 最小评分值为1，用户不能选择低于1的评分
      direction: Axis.horizontal, // 评分条水平排列
      allowHalfRating: true, // 允许半星评分，增加评分的精细度
      itemBuilder: (context, _) {
        // 定义评分条的图标和颜色
        return Icon(
          Icons.star, // 使用星星图标作为评分图标
          color: Theme.of(context).colorScheme.tertiary, // 图标颜色根据主题的三级颜色方案确定
        );
      },
      onRatingUpdate: (rating) {}, // 当评分更新时的回调函数，此处未实现具体逻辑
    );
  }
}
